library("nflfastR")
library("knitr")
library("qs")
library("glue")
library("skimr")
library("gt")
library("tidyverse")
Datasets
Rosters
The ‘rosters’ dataset provides fantasy relevant player data and ids of from 2010 to 2020. This dataset is primarily used to gather positional data to join with stats. The ids provided may also be utilized to further join outside data.
rosters
Games
The ‘games’ dataset provides game data and results from 2010 to 2020.
Weekly
The ‘weekly’ dataset provides weekly player stats, snaps, injury data, and further advanced metrics that will be added down the road. Each observation is unique by a player_id and game_id that unites the season, week, home team, and away team.
weekly
Season
The ‘season’ dataset aggregates the ‘weekly’ dataset by season.
season
Usage
Season Averages
season_avgs <-
weekly %>%
filter(n() > 1) %>%
group_by(player_id, season) %>%
summarise(across(
.cols = c(
completions:fantasy_points_ppr,
-(catch_rate:short_catch_rate),
total_snaps, offense_snaps, special_teams_snaps,
),
.fns = mean,
na.rm = TRUE,
.names = "{.col}_pg"
)) %>%
mutate(across(where(is.numeric), round, 2))
Running Backs
2021 Season
# 2021 coaches
games[1:32,] %>% select(season, team, team_coach)
LS0tCnRpdGxlOiAiTkZMIERhdGEiCmF1dGhvcjogIk5hdGUgTGV3aXMiCm91dHB1dDogaHRtbF9ub3RlYm9vawotLS0KCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IFRSVUUpCmBgYAoKYGBge3IgbG9hZCwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0KbGlicmFyeSgibmZsZmFzdFIiKQpsaWJyYXJ5KCJza2ltciIpCmxpYnJhcnkoImd0IikKbGlicmFyeSgidGlkeXZlcnNlIikKYGBgCgpgYGB7ciBpbXBvcnQsIGluY2x1ZGU9RkFMU0V9CiMgZnJvbSAnZ2FtZS1kYXRhLlInCnJhd193ZWVrbHlfZGF0YSA8LSByZWFkX2NzdigiLi9kYXRhX291dHB1dC93ZWVrbHlfZGF0YS5jc3YiKQpyYXdfc2Vhc29uX2RhdGEgPC0gcmVhZF9jc3YoIi4vZGF0YV9vdXRwdXQvc2Vhc29uX2RhdGEuY3N2IikKCiMgZnJvbSAncm9zdGVycy5SJwpyYXdfcm9zdGVycyA8LSByZWFkX2NzdigiLi9kYXRhX291dHB1dC9yb3N0ZXJzLmNzdiIpCgojIGZyb20gJ3BsYXllci1zdGF0cy5SJwpyYXdfd2Vla2x5X3N0YXRzIDwtIHJlYWRfY3N2KCIuL2RhdGFfb3V0cHV0L3dlZWtseV9qb2luZWQuY3N2IikKcmF3X3NlYXNvbl9zdGF0cyA8LSByZWFkX2NzdigiLi9kYXRhX291dHB1dC9vdmVyYWxsX2pvaW5lZC5jc3YiKQoKIyBmcm9tICdnYW1lcy5SJwpyYXdfZ2FtZXMgPC0gcmVhZF9jc3YoIi4vZGF0YV9vdXRwdXQvZ2FtZXMuY3N2IikKYGBgCgpgYGB7ciBjbGVhbiwgaW5jbHVkZT1GQUxTRX0KIyB3ZWVrbHkKd2Vla2x5X3N0YXRzIDwtCiAgcmF3X3dlZWtseV9zdGF0cyAlPiUKICBzZWxlY3QoMTo1LCBjb21wbGV0aW9uczpmYW50YXN5X3BvaW50c19wcHIsIC1wbGF5ZXJfbmFtZSkgJT4lCiAgYXJyYW5nZSgtc2Vhc29uLCBwbGF5ZXJfaWQsIHdlZWspCgp3ZWVrbHlfZGF0YSA8LSByYXdfd2Vla2x5X2RhdGEgJT4lIHNlbGVjdCgtcmVjZW50X3RlYW0pCgojIG92ZXJhbGwKc2Vhc29uX3N0YXRzIDwtCiAgcmF3X3NlYXNvbl9zdGF0cyAlPiUKICBzZWxlY3QoMTo1LCBjb21wbGV0aW9uczpmYW50YXN5X3BvaW50c19wcHIsIG53X3JrOnN0ZF9ya19vdnIsIC1wbGF5ZXJfbmFtZSkgJT4lCiAgYXJyYW5nZSgtc2Vhc29uLCBwbGF5ZXJfaWQpCgpzZWFzb25fZGF0YSA8LSByYXdfc2Vhc29uX2RhdGEgJT4lIHNlbGVjdCgtZ2FtZXMpCgojIG90aGVyCnJvc3RlcnMgPC0gcmF3X3Jvc3RlcnMgJT4lCiAgcmVuYW1lKHBsYXllcl9pZCA9IGdzaXNfaWQpICU+JQogIG11dGF0ZShmYW50YXN5X3Bvc2l0aW9uID0gaWZlbHNlKHBvc2l0aW9uICVpbiUgYygiUUIiLCAiV1IiLCAiVEUiLCAiUkIiLCAiRkIiKSwgcG9zaXRpb24sIE5BKSkgJT4lCiAgc2VsZWN0KAogICAgcGxheWVyX2lkLAogICAgc2Vhc29uLAogICAgZnVsbF9uYW1lLAogICAgcG9zaXRpb24sCiAgICBzdGF0dXMsCiAgICB5ZWFyc19leHA6c3RhdHVzLAogICAgZmFudGFzeV9wb3NpdGlvbiwKICAgIGRlcHRoX2NoYXJ0X3Bvc2l0aW9uLAogICAgbndfcG9zaXRpb24KICApICU+JQogIGZpbHRlcighaXMubmEoZmFudGFzeV9wb3NpdGlvbikpICU+JQogIGFycmFuZ2UoLXNlYXNvbiwgcG9zaXRpb24sIHBsYXllcl9pZCkKCmdhbWVzIDwtIHJhd19nYW1lcyAlPiUgZmlsdGVyKHNlYXNvbiA+PSAyMDEwKSAlPiUgYXJyYW5nZSgtc2Vhc29uKQpgYGAKCmBgYHtyIGpvaW4sIGluY2x1ZGU9RkFMU0V9CiMgam9pbiBhbmQgZmlsdGVyIHRvIGZhbnRhc3kgcmVsZXZhbnQgcG9zaXRpb25zCnNlYXNvbiA8LSBzZWFzb25fc3RhdHMgJT4lCiAgbGVmdF9qb2luKAogICAgcm9zdGVycywgYnkgPSBjKCJwbGF5ZXJfaWQiLCAic2Vhc29uIikKICApICU+JQogIGxlZnRfam9pbihzZWFzb25fZGF0YSwgYnkgPSBjKCJwbGF5ZXJfaWQiLCAic2Vhc29uIikpICU+JSAKICBmaWx0ZXIoIWlzLm5hKGZhbnRhc3lfcG9zaXRpb24pKQoKd2Vla2x5IDwtIHdlZWtseV9zdGF0cyAlPiUKICBsZWZ0X2pvaW4oCiAgICByb3N0ZXJzLCBieSA9IGMoInBsYXllcl9pZCIsICJzZWFzb24iKQogICkgJT4lCiAgbGVmdF9qb2luKHdlZWtseV9kYXRhLCBieSA9IGMoInBsYXllcl9pZCIsICJzZWFzb24iLCAid2VlayIpKSAlPiUgCiAgZmlsdGVyKCFpcy5uYShmYW50YXN5X3Bvc2l0aW9uKSkKCiMgY3JlYXRlIGlkIGNvbHMKaWRfY29scyA8LSBjKCJwbGF5ZXJfaWQiLCAic2Vhc29uIiwgImZ1bGxfbmFtZSIsICJyZWNlbnRfdGVhbSIsICJwb3NpdGlvbiIpCgojIHJlYXJyYW5nZQpzZWFzb24gPC0gc2Vhc29uICU+JSBzZWxlY3QoaWRfY29scywgZHBseXI6OmV2ZXJ5dGhpbmcoKSkgJT4lIAogIG11dGF0ZShhY3Jvc3Mod2hlcmUoaXMubnVtZXJpYyksIHJvdW5kLCAyKSkKd2Vla2x5IDwtIHdlZWtseSAlPiUgc2VsZWN0KGlkX2NvbHMsIGRwbHlyOjpldmVyeXRoaW5nKCkpICU+JSAKICByZWxvY2F0ZSh3ZWVrLCAuYWZ0ZXIgPSBzZWFzb24pICU+JSAKICAgIG11dGF0ZShhY3Jvc3Mod2hlcmUoaXMubnVtZXJpYyksIHJvdW5kLCAyKSkKYGBgCgojIyBEYXRhc2V0cwoKIyMjIFJvc3RlcnMKClRoZSAncm9zdGVycycgZGF0YXNldCBwcm92aWRlcyBmYW50YXN5IHJlbGV2YW50IHBsYXllciBkYXRhIGFuZCBpZHMgb2YgZnJvbSAyMDEwIHRvIDIwMjAuIFRoaXMgZGF0YXNldCBpcyBwcmltYXJpbHkgdXNlZCB0byBnYXRoZXIgcG9zaXRpb25hbCBkYXRhIHRvIGpvaW4gd2l0aCBzdGF0cy4gVGhlIGlkcyBwcm92aWRlZCBtYXkgYWxzbyBiZSB1dGlsaXplZCB0byBmdXJ0aGVyIGpvaW4gb3V0c2lkZSBkYXRhLgpgYGB7ciByb3N0ZXJzfQpyb3N0ZXJzCmBgYAoKCiMjIyBHYW1lcwoKVGhlICdnYW1lcycgZGF0YXNldCBwcm92aWRlcyBnYW1lIGRhdGEgYW5kIHJlc3VsdHMgZnJvbSAyMDEwIHRvIDIwMjAuCmBgYHtyIGdhbWVzfQpnYW1lcwpgYGAKCgojIyMgV2Vla2x5CgpUaGUgJ3dlZWtseScgZGF0YXNldCBwcm92aWRlcyB3ZWVrbHkgcGxheWVyIHN0YXRzLCBzbmFwcywgaW5qdXJ5IGRhdGEsIGFuZCBmdXJ0aGVyIGFkdmFuY2VkIG1ldHJpY3MgdGhhdCB3aWxsIGJlIGFkZGVkIGRvd24gdGhlIHJvYWQuIEVhY2ggb2JzZXJ2YXRpb24gaXMgdW5pcXVlIGJ5IGEgcGxheWVyX2lkIGFuZCBnYW1lX2lkIHRoYXQgdW5pdGVzIHRoZSBzZWFzb24sIHdlZWssIGhvbWUgdGVhbSwgYW5kIGF3YXkgdGVhbS4KCmBgYHtyfQp3ZWVrbHkKYGBgCgoKIyMjIFNlYXNvbgoKVGhlICdzZWFzb24nIGRhdGFzZXQgYWdncmVnYXRlcyB0aGUgJ3dlZWtseScgZGF0YXNldCBieSBzZWFzb24uCgpgYGB7cn0Kc2Vhc29uCmBgYAoKCiMjIFVzYWdlCgoKIyMjIFNlYXNvbiBBdmVyYWdlcwpgYGB7cn0Kc2Vhc29uX2F2Z3MgPC0KICB3ZWVrbHkgJT4lCiAgZmlsdGVyKG4oKSA+IDEpICU+JQogIGdyb3VwX2J5KHBsYXllcl9pZCwgc2Vhc29uKSAlPiUKICBzdW1tYXJpc2UoYWNyb3NzKAogICAgLmNvbHMgPSBjKAogICAgICBjb21wbGV0aW9uczpmYW50YXN5X3BvaW50c19wcHIsCiAgICAgIC0oY2F0Y2hfcmF0ZTpzaG9ydF9jYXRjaF9yYXRlKSwKICAgICAgdG90YWxfc25hcHMsIG9mZmVuc2Vfc25hcHMsIHNwZWNpYWxfdGVhbXNfc25hcHMsCiAgICApLAogICAgLmZucyA9IG1lYW4sCiAgICBuYS5ybSA9IFRSVUUsCiAgICAubmFtZXMgPSAiey5jb2x9X3BnIgogICkpICU+JQogIG11dGF0ZShhY3Jvc3Mod2hlcmUoaXMubnVtZXJpYyksIHJvdW5kLCAyKSkKYGBgCgoKIyMjIFF1YXJ0ZXJiYWNrcwoKYGBge3J9CnNlYXNvbiAlPiUgCiAgZmlsdGVyKHBvc2l0aW9uID09ICJRQiIsIHNlYXNvbiA9PSAyMDIwKSAlPiUgCiAgc2VsZWN0KG53X3JrLCBpZF9jb2xzLCBjb21wbGV0aW9uczppbnRfdGRzLCAtcGxheWVyX2lkKSAlPiUgCiAgYXJyYW5nZShud19yaykKYGBgCgoKIyMjIFJ1bm5pbmcgQmFja3MKYGBge3J9CnNlYXNvbiAlPiUgCiAgZmlsdGVyKHBvc2l0aW9uID09ICJSQiIsIHNlYXNvbiA9PSAyMDIwKSAlPiUgCiAgc2VsZWN0KG53X3JrLCBpZF9jb2xzLCBjYXJyaWVzOnJ1c2hpbmdfdGRzXzUwLCAtcGxheWVyX2lkKSAlPiUgCiAgYXJyYW5nZShud19yaykKYGBgCgoKCgojIyMjIyAyMDIxIFNlYXNvbgoKYGBge3J9CiMgMjAyMSBjb2FjaGVzCmdhbWVzWzE6MzIsXSAlPiUgc2VsZWN0KHNlYXNvbiwgdGVhbSwgdGVhbV9jb2FjaCkKYGBg